package com.gk.javaservice.util.base;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

//加密工具类
public class Encrypting {
	/**
	 * 加盐生成32位md5码
	 * @param pwd
	 * @return
	 */
	public static String md5Password(String pwd) {
		int salt = 0xee;
		try {
			// 得到一个信息摘要器
			MessageDigest md = MessageDigest.getInstance("md5");
			byte[] result = md.digest(pwd.getBytes());
			StringBuffer bf = new StringBuffer();

			// 把每一个byte做一个与运算 0xff；
			for (byte b : result) {
				// 与运算
				int num = b & salt;// 加盐
				String str = Integer.toHexString(num);
				if (str.length() == 1)
					bf.append("0");
				bf.append(str);
			}

			// md5加密后的结果
			return bf.toString();
		} catch (NoSuchAlgorithmException e) {

			e.printStackTrace();
			return "";
		}
	}

	/**
	 * 加盐生成32位md5机器码
	 * @return
	 */
	public static String md5ComCode() {
		int salt = 0xdd;
		String s = SerialNumberUtil.getComSnVo();
		try {
			// 得到一个信息摘要器
			MessageDigest md = MessageDigest.getInstance("md5");
			byte[] result = md.digest(s.getBytes());
			StringBuffer bf = new StringBuffer();

			// 把每一个byte做一个与运算 0xff；
			for (byte b : result) {
				// 与运算
				int num = b & salt;// 加盐
				String str = Integer.toHexString(num);
				if (str.length() == 1)
					bf.append("0");
				bf.append(str);
			}

			// md5加密后的结果
			return bf.toString();
		} catch (NoSuchAlgorithmException e) {

			e.printStackTrace();
			return "";
		}
	}

	/**
	 * 加盐生成32位md5授权码,传入参数为机器码
	 * @param code
	 * @return
	 */
	public static String md5AuthorizationCode(String code) {
		int salt = 0xdd;
		// String s=SerialNumberUtil.getComSnVo();
		try {
			// 得到一个信息摘要器
			MessageDigest md = MessageDigest.getInstance("md5");
			byte[] result = md.digest(code.getBytes());
			StringBuffer bf = new StringBuffer();

			// 把每一个byte做一个与运算 0xff；
			for (byte b : result) {
				// 与运算
				int num = b & salt;// 加盐
				String str = Integer.toHexString(num);
				if (str.length() == 1)
					bf.append("0");
				bf.append(str);
			}

			// md5加密后的结果
			return bf.toString();
		} catch (NoSuchAlgorithmException e) {

			e.printStackTrace();
			return "";
		}
	}

//	 public static void main(String[] args) {
//	 String s=md5ComCode();
//	 // System.out.println(s);
//	 String show=md5AuthorizationCode(s);
//	 // System.out.println(show);
//	 }

}
